#ifndef SEMANTICNODECONSTRUCTOBJECT_H_
#define SEMANTICNODECONSTRUCTOBJECT_H_

#include "SemanticNode.h"
#include "ValueType.h"
#include <vector>
#include <string>

class SemanticNodeExpression;

class SemanticNodeConstructObject : public SemanticNode, public ValueType {
private:
	std::vector<SemanticNodeExpression *> arguments;
	std::vector<SemanticNodeExpression *> dimensions;
	std::vector<const SyntaxTreeNode *> expressions;

public:
	SemanticNodeConstructObject(const SyntaxTreeNode *constructObjectNode, SemanticNode *parent);

	std::vector<const SyntaxTreeNode *> getArrayExpressions();
	void addArguments(std::vector<SemanticNodeExpression *> argList);
	void addArgument(SemanticNodeExpression *argument);
	void addDimension(SemanticNodeExpression *dimension);

	virtual std::string toDebugString(int tab);
};

#endif